<?php

declare(strict_types=1);

namespace DreamCat\StateMachine\HookInterface;

use DreamCat\StateMachine\Popo\MachineData;

/**
 * 状态转移完成后执行
 * @author vijay
 */
interface AfterOperatorInterface
{
    /**
     * 状态转移完成后执行
     * @param MachineData $newMachineData 执行动作后的状态机
     * @param MachineData $oldMachineData 执行动作前的状态机
     * @param string $operatorKey 动作标识
     * @param array $operatorParam 动作参数
     * @return void
     * @note 抛出异常不影响流程和后续功能
     */
    public function afterOperator(
        MachineData $newMachineData,
        MachineData $oldMachineData,
        string $operatorKey,
        array $operatorParam
    ): void;
}

# end of file
